﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace BattleCity
{
    public abstract class Proyectil : ObjetoActivo
    {

        abstract public int Danio(Objeto objeto);

        //Avanza y detecta si impacto contra algo
        override public void Vivir()
        {
            //Como la velocidad es la cantidad de cuadraditos que se mueve, y cada vez que avanza, avanza un cuadradito:
            int i = 0;
            while (this.energia > 0 &&  i < this.Velocidad)
            {
                Escenario.getEscenario().DetectarImpacto(this);
                if (energia > 0)
                {
                    this.Avanzar();
                }
                
                i++;
            }           
        }
        
        //Metodo llamado por el escenario cuando el objeto se va del terreno
        override public void FueraDelTerreno()
        {
            //Si el proyectil se va del escenario sin daniar a nadie, se autodestruye
            this.Daniar(100);
        }

	    public override void Persistir(XmlDocument xml, XmlNode subnodo)
        {

            XmlNode principal = xml.CreateElement(this.nombre);
            XmlNode direccion = xml.CreateElement("Direccion");
            if (Direccion.EsArriba())
            {
                direccion.InnerText = "Arriba";
            }
            else if (Direccion.EsAbajo())
            {
                direccion.InnerText = "Abajo";
            }
            else if (Direccion.EsDerecha())
            {
                direccion.InnerText = "Derecha";
            }
            else
            {
                direccion.InnerText = "Izquierda";
            }
            XmlNode posicion = xml.CreateElement("Posicion");
            XmlNode x = xml.CreateElement("X");
            XmlNode y = xml.CreateElement("Y");

            x.InnerText = X.ToString();
            y.InnerText = Y.ToString();

            posicion.AppendChild(x);
            posicion.AppendChild(y);

            principal.AppendChild(direccion);
            principal.AppendChild(posicion);

            subnodo.AppendChild(principal);
        }

    }
}
